home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et-2_2.lha / et2.2 / src / Ink.h < prev    next >
C/C++ Source or Header  |  1990-11-28  |  3KB  |  124 lines

  1. #ifndef Ink_First
  2. #ifdef __GNUG__
  3. #pragma once
  4. #endif
  5. #define Ink_First
  6.  
  7. #include "Types.h"
  8. #include "Object.h"
  9.  
  10. //---- Ink ---------------------------------------------------------------------
  11.  
  12. class Ink : public Object {
  13.     long int id;
  14. public:
  15.     MetaDef(Ink);
  16.     Ink();
  17.     Ink(long i);
  18.     
  19.     long GetId()
  20.     { return id; }
  21.     
  22.     void SetId(long id);
  23.     virtual void SetInk(class Port *p);
  24.     virtual bool IsEqual(Object*);
  25.     virtual ostream& PrintOn(ostream&);
  26.     virtual istream& ReadFrom(istream&);
  27. };
  28.  
  29. extern Ink *gInkXor,
  30.        *gInkNone,
  31.        *gInkWhite,
  32.        *gInkBlack,
  33.        *gHighlightColor;
  34.        
  35. // obsolete !!!
  36. extern Ink *ePatXor, *ePatNone, *ePatWhite, *ePatBlack;
  37. extern Ink *ePatGrey12, *ePatGrey25, *ePatGrey40, *ePatGrey50, *ePatGrey60;
  38. extern Ink *ePatGrey75;
  39. extern Ink *ePat00, *ePat01, *ePat02, *ePat03, *ePat04, *ePat05;
  40. extern Ink *ePat06, *ePat07, *ePat08, *ePat09, *ePat10, *ePat11;
  41. extern Ink *ePat12, *ePat13, *ePat14, *ePat15;
  42.  
  43. typedef Ink *GrPattern;
  44.  
  45. //---- RGBColor ----------------------------------------------------------------
  46.  
  47. typedef short word;
  48.  
  49. const int MaxWord= 255;
  50.  
  51. class RGBColor: public Ink {
  52. friend class HSVColor;
  53.     short prec;
  54.     short red, green, blue;
  55. public:
  56.     class Port *port;
  57.     
  58. public:
  59.     MetaDef(RGBColor);
  60.     RGBColor();
  61.     RGBColor(RGBColor*);
  62.     RGBColor(short r, short g, short b, short prec= 0);
  63.     RGBColor(class HSVColor &h, short prec= 0);
  64.     RGBColor(short graylevel, short prec= 0);
  65.     RGBColor(float graylevel, short prec= 0);
  66.     RGBColor(const RGBColor&);
  67.     
  68.     short GetRed()
  69.     { return red; }
  70.     short GetGreen()
  71.     { return green; }
  72.     short GetBlue()
  73.     { return blue; }
  74.     short GetPrec()
  75.     { return prec; }
  76.     bool SetHSV(short hue, short sat, short value, short p= 0);
  77.     bool SetRGB(short r, short g, short b, short p= 0);
  78.     bool SetRed(short r)
  79.     { return SetRGB(r, green, blue, prec); }
  80.     bool SetGreen(short g)
  81.     { return SetRGB(red, g, blue, prec); }
  82.     bool SetBlue(short b)
  83.     { return SetRGB(red, green, b, prec); }
  84.     bool SetPrec(short p)
  85.     { return SetRGB(red, green, blue, p); }
  86.     int AsGreyLevel();
  87.     
  88.     void SetInk(Port *p);
  89.     ostream &PrintOn(ostream &s);
  90.     istream &ReadFrom(istream &s);
  91. };
  92.  
  93. //---- HSVColor ----------------------------------------------------------------
  94.  
  95. class HSVColor {
  96. public:
  97.     short hue, saturation, value;
  98.  
  99.     HSVColor()
  100.     { hue= saturation= value= 0; }
  101.     HSVColor(int h, int s, int v) : hue(h), saturation(s), value(v)
  102.     { }
  103.     HSVColor(RGBColor &c);
  104.     HSVColor(int graylevel)
  105.     { hue= saturation= 0; value= graylevel; }
  106.     
  107.     ostream &PrintOn(ostream &s);
  108.     istream &ReadFrom(istream &s);
  109. };
  110.  
  111. //---- InkManager --------------------------------------------------------------
  112.  
  113. class InkManager : public Root {
  114. public:
  115.     InkManager();
  116.     virtual ~InkManager();
  117.     
  118.     bool Init();        // returns TRUE on error
  119. };
  120.  
  121. extern InkManager *gInkManager;
  122.  
  123. #endif Ink_First
  124.